<?php
// Author : evilair
// Time   : 2017/07/27

/*****************************
* 给定一个字符串,寻找出最长的回文子串的长度
* 区分大小写, Aa不是一个回文字符串
*****************************/
function longpalindrome($str) {
  $len = strlen($str);
  $maxLen = 0;
  $letterArr = [];
  for ($i = 0; $i < $len; $i++) {
    if (array_key_exists($str[$i], $letterArr)) {
      $letterArr[$str[$i]] = $letterArr[$str[$i]] + 1;
    } else {
      $letterArr[$str[$i]] = 1;
    }
  }
  $evenArr = [];
  $oddFlag = false;
  foreach ($letterArr as $key => $value) {
    if ($value % 2 == 0) {
      $evenArr[$key] = $value;
    }
    if ($value == 1) {
      $oddFlag = true;
    }
  }
  $count = array_sum($evenArr);
  if ($oddFlag) {
    $count +=1;
  }
  return $count;
}

function longpalindrome1($str) {
  $len = strlen($str);
  $maxLen = 0;
  $letterArr = [];
  for ($i = 0; $i < $len; $i++) {
    if (array_key_exists($str[$i], $letterArr)) {
      $letterArr[$str[$i]] = $letterArr[$str[$i]] + 1;
    } else {
      $letterArr[$str[$i]] = 1;
    }
  }
  $oddFlag = false;
  // 使用回调函数的方式无法改变外部 $oddFlag 的值 所以有可能少一
  $evenArr = array_map(function ($item) {
    // $oddFlag = flase;
    // if ($item == 1) {
    //   $oddFlag = true;
    // }
    // var_dump($item);
    // var_dump($oddFlag);
    if ($item % 2 == 0) {
      return $item;
    } else {
      return 0;
    }
  }, $letterArr);
  $count = array_sum($evenArr);
  // var_dump($oddFlag);
  if ($oddFlag) {
    $count +=1;
  }
  return $count;
}
$len = longpalindrome1('abccccdd');
echo $len;
?>